package cn.pn.project.service;

import cn.pn.project.module.base.AddressModule;
import cn.pn.project.pojo.base.Address;
import cn.pn.project.vo.base.AddressVo;

import java.sql.SQLException;
import java.util.List;

public interface AddressService {
    //新增地址

    /**
     * 新增地址
     * @param address 除掉地址id剩下的必须有  判断是否已经有默认的地址  有就将这个地址添加成非默认地址 没有就将这个地址添加成默认地址
     * @return
     * @throws RuntimeException
     */
    boolean addAddress(Address address) throws RuntimeException, SQLException;
    //修改地址

    /**
     * 修改地址
     * @param address 所有值必须有
     * @return
     * @throws RuntimeException
     */
    boolean changeAddress(Address address) throws RuntimeException, SQLException;
    //删除地址

    /**
     * 删除地址
     * @param address 地址id 用户id 必须保证要存在这两个数据
     * @return
     * @throws RuntimeException
     */
    boolean removeAddress(Address address) throws RuntimeException, SQLException;

    /**
     * 插叙某用户的所有地址
      * @param address 用户id
     * @return
     * @throws RuntimeException
     */
    List<AddressModule> findAddressByUserId(Address address) throws RuntimeException, SQLException;

    /**
     *  生成订单时将原默认地址修改为本次订单使用的地址
     * @param addressVo 传入旧默认地址id 和生成订单时的地址id
     */
    void defaultAddressReplace(AddressVo addressVo) throws RuntimeException, SQLException;
}
